/**
 * @file dblangue.c
 * @brief Fichier source du module dblangue.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

   Librairies de database

   ********************************************************************* */

#include "dblangue.h"

/* *********************************************************************

   Fonctions

   ********************************************************************* */
void recuperation_DLan(Langue **langue, const int id)
{
  if(langue)
    {
      DataBase data;
      ouvrir_Db();
      /* Récupération de ceux qui ont comme père id */
      prepare_Db(&data, "select libelle from langue where rowid = ?");
      bindValueInt_Db(&data, 1, id);

      while(execute_Db(&data))
	{
	  if((*langue) == NULL)
	    (*langue) = creer_Lan();
	  setLibelle_Lan((*langue), getValueText_Db(&data, 0));
	}
      finalise_Db(&data);
    }
}

void insertion_DLan(Langue *langue)
{
  if(langue)
    {
      DataBase data;
      if(getSup_Lan(langue) == 1)
	{
	  suppression_DLan(getId_Lan(langue));
	  return;
	}
      if(getId_Lan(langue) == 0)
	{
	  prepare_Db(&data, "insert into langue (libelle) value (?)");
	}
      else
	{
	  if(getMaj_Lan(langue) == 1)
	    {
	      prepare_Db(&data, "update langue (libelle) value (?) where rowid = ?");
	      bindValueInt_Db(&data, 2, getId_Lan(langue));
	    }
	}
      if(getMaj_Lan(langue) == 1 || getId_Lan(langue) == 0)
	{
	  bindValueText_Db(&data, 1, getLibelle_Lan(langue));
	  if(execute_Db(&data))
	    {
	      
	    }
	  finalise_Db(&data);
	}
      if(getId_Lan(langue) == 0)
	{
	  prepare_Db(&data, "select max(rowid) from langue");
	  if(execute_Db(&data))
	    {
	      setId_Lan(langue, getValueInt_Db(&data, 0));
	    }
	  finalise_Db(&data);
	}
    }
}

void suppression_DLan(const int id)
{
  if (id > 0)
    {
      DataBase data;
      ouvrir_Db();
      prepare_Db(&data, "delete from Langue where rowid = ?");
      bindValueInt_Db(&data, 1, id);
      if (execute_Db(&data))
        {
	  
        }
      finalise_Db(&data);
      prepare_Db(&data, "delete from oeuvreLangue where id_langue = ?");
      bindValueInt_Db(&data, 1, id);
      if(execute_Db(&data))
	{

	}
      finalise_Db(&data);
    }
}
